﻿/*
 Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
(function() {
    function d(c, d) {
        var b;
        try {
            b = c.getSelection().getRanges()[0]
        } catch (f) {
            return null
        }
        b.shrink(CKEDITOR.SHRINK_TEXT);
        return c.elementPath(b.getCommonAncestor()).contains(d, 1)
    }

    function e(c, e) {
        var b = c.lang.liststyle;
        if ("bulletedListStyle" == e)
            return{
                title: b.bulletedTitle,
                minWidth: 300,
                minHeight: 50,
                contents: [
                    {
                        id: "info",
                        accessKey: "I",
                        elements: [
                            {
                                type: "select",
                                label: b.type,
                                id: "type",
                                align: "center",
                                style: "width:150px",
                                items: [[b.notset, ""], [b.circle, "circle"], [b.disc, "disc"], [b.square, "square"]],
                                setup: function(a) {
                                    this.setValue(a.getStyle("list-style-type") ||
                                        h[a.getAttribute("type")] ||
                                        a.getAttribute("type") ||
                                        "")
                                },
                                commit: function(a) {
                                    var b = this.getValue();
                                    b ? a.setStyle("list-style-type", b) : a.removeStyle("list-style-type")
                                }
                            }
                        ]
                    }
                ],
                onShow: function() {
                    var a = this.getParentEditor();
                    (a = d(a, "ul")) && this.setupContent(a)
                },
                onOk: function() {
                    var a = this.getParentEditor();
                    (a = d(a, "ul")) && this.commitContent(a)
                }
            };
        if ("numberedListStyle" == e) {
            var g = [
                [b.notset, ""], [b.lowerRoman, "lower-roman"], [b.upperRoman, "upper-roman"],
                [b.lowerAlpha, "lower-alpha"], [b.upperAlpha, "upper-alpha"],
                [b.decimal, "decimal"]
            ];
            (!CKEDITOR.env.ie || 7 < CKEDITOR.env.version) &&
                g.concat([
                    [b.armenian, "armenian"], [b.decimalLeadingZero, "decimal-leading-zero"], [b.georgian, "georgian"],
                    [b.lowerGreek, "lower-greek"]
                ]);
            return{
                title: b.numberedTitle,
                minWidth: 300,
                minHeight: 50,
                contents: [
                    {
                        id: "info",
                        accessKey: "I",
                        elements: [
                            {
                                type: "hbox",
                                widths: ["25%", "75%"],
                                children: [
                                    {
                                        label: b.start,
                                        type: "text",
                                        id: "start",
                                        validate: CKEDITOR.dialog.validate.integer(b.validateStartNumber),
                                        setup: function(a) {
                                            this.setValue(a.getFirst(f).getAttribute("value") ||
                                                a.getAttribute("start") ||
                                                1)
                                        },
                                        commit: function(a) {
                                            var b = a.getFirst(f),
                                                c = b.getAttribute("value") || a.getAttribute("start") || 1;
                                            a.getFirst(f).removeAttribute("value");
                                            var d = parseInt(this.getValue(), 10);
                                            isNaN(d) ? a.removeAttribute("start") : a.setAttribute("start", d);
                                            a = b;
                                            b = c;
                                            for (d = isNaN(d) ? 1 : d; (a = a.getNext(f)) && b++;)
                                                a.getAttribute("value") == b && a.setAttribute("value", d + b - c)
                                        }
                                    }, {
                                        type: "select",
                                        label: b.type,
                                        id: "type",
                                        style: "width: 100%;",
                                        items: g,
                                        setup: function(a) {
                                            this.setValue(a.getStyle("list-style-type") ||
                                                h[a.getAttribute("type")] ||
                                                a.getAttribute("type") ||
                                                "")
                                        },
                                        commit: function(a) {
                                            var b = this.getValue();
                                            b ? a.setStyle("list-style-type", b) : a.removeStyle("list-style-type")
                                        }
                                    }
                                ]
                            }
                        ]
                    }
                ],
                onShow: function() {
                    var a = this.getParentEditor();
                    (a = d(a, "ol")) && this.setupContent(a)
                },
                onOk: function() {
                    var a = this.getParentEditor();
                    (a = d(a, "ol")) && this.commitContent(a)
                }
            }
        }
    }

    var f = function(c) { return c.type == CKEDITOR.NODE_ELEMENT && c.is("li") },
        h = {
            a: "lower-alpha",
            A: "upper-alpha",
            i: "lower-roman",
            I: "upper-roman",
            1: "decimal",
            disc: "disc",
            circle: "circle",
            square: "square"
        };
    CKEDITOR.dialog.add("numberedListStyle", function(c) { return e(c, "numberedListStyle") });
    CKEDITOR.dialog.add("bulletedListStyle", function(c) { return e(c, "bulletedListStyle") })
})();
